Apache Spark একটি অত্যন্ত শক্তিশালী ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক যা ক্লাউড পরিবেশে ডেটা প্রসেসিং করতে অত্যন্ত কার্যকরী। Cloud platforms যেমন Amazon Web Services (AWS), Microsoft Azure, এবং Google Cloud Platform (GCP) এ স্পার্কের ইন্টিগ্রেশন বিশেষভাবে ডিস্ট্রিবিউটেড ডেটা প্রসেসিং এবং মেশিন লার্নিং প্রক্রিয়াকে দ্রুত এবং স্কেলেবল করে তোলে।
এই টিউটোরিয়ালে, আমরা Apache Spark এবং Cloud Integration নিয়ে আলোচনা করব এবং দেখব কিভাবে স্পার্ক ক্লাউড প্ল্যাটফর্মের সাথে কাজ করে।
1. Spark on AWS (Amazon Web Services)
Amazon Web Services (AWS) হল একটি শক্তিশালী ক্লাউড প্ল্যাটফর্ম, যা স্কেলেবল ডেটা স্টোরেজ এবং প্রসেসিং সুবিধা প্রদান করে। স্পার্ককে AWS-এ ডেপ্লয় করতে অনেক উপায় রয়েছে, এবং Amazon EMR (Elastic MapReduce) ব্যবহার করে স্পার্কের সম্পূর্ণ কার্যক্রম চালানো যায়।
How Spark Integrates with AWS:
- Amazon EMR (Elastic MapReduce):
- EMR একটি ম্যানেজড সার্ভিস যা AWS ক্লাউডে ডিস্ট্রিবিউটেড ডেটা প্রসেসিং করার জন্য ব্যবহৃত হয়। EMR স্পার্ক, হাডুপ, হাইভ, এবং অন্যান্য ডেটা প্রসেসিং টুল সমর্থন করে।
- স্পার্ক সহজে Amazon S3 এবং Amazon DynamoDB এর সাথে ইন্টিগ্রেট করা যায়।
Amazon S3 Integration:
- স্পার্ক Amazon S3 ব্যবহার করে ডেটা স্টোরেজ করতে পারে এবং সেখান থেকে ডেটা লোড ও স্টোর করতে পারে। S3-কে স্পার্ক HDFS এর মতো ব্যবহার করা যেতে পারে।
Example: Spark reading and writing data from/to Amazon S3
val spark = SparkSession.builder() .appName("Spark on AWS S3") .getOrCreate() // Reading from S3 val df = spark.read.parquet("s3a://bucket-name/path/to/data.parquet") // Writing to S3 df.write.parquet("s3a://bucket-name/path/to/output/")এখানে:
- s3a://: এটি স্পার্কে S3 ইন্টিগ্রেশনের জন্য ব্যবহৃত URI স্কিম।
- স্পার্ক সঠিকভাবে AWS সিডেন্টিয়াল কনফিগারেশন ব্যবহার করে S3 এর সাথে কাজ করবে।
- AWS Lambda:
- AWS Lambda ব্যবহার করে স্পার্ক জব ট্রিগার করা বা একটি ফাংশন চালানো যেতে পারে, যাতে ডেটা প্রসেসিং কুয়েরি বা ট্রান্সফরমেশন নির্ধারিত হয়।
- AWS Glue:
- AWS Glue হল একটি ডেটা ক্যাটালগ এবং ETL (Extract, Transform, Load) সার্ভিস যা স্পার্কের সাথে একত্রে ডেটা প্রসেসিং এবং ট্রান্সফরমেশন করার জন্য ব্যবহার করা যায়।
2. Spark on Microsoft Azure
Microsoft Azure একটি পাবলিক ক্লাউড প্ল্যাটফর্ম, যা অ্যাপ্লিকেশন এবং ডেটা প্রসেসিংয়ের জন্য নানা রকম পরিষেবা প্রদান করে। স্পার্কের জন্য Azure HDInsight একটি ম্যানেজড সার্ভিস, যা স্পার্ক রান করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে।
How Spark Integrates with Azure:
Azure HDInsight:
- Azure HDInsight হল একটি ম্যানেজড সার্ভিস যা স্পার্কসহ অন্যান্য ক্লাস্টার-ভিত্তিক টুলের জন্য ব্যবহৃত হয়।
- স্পার্কের জন্য HDInsight ইন্টিগ্রেশন সহজ এবং স্কেলেবল, যেখানে আপনাকে শুধুমাত্র স্পার্ক কনফিগারেশন করতে হবে এবং ক্লাস্টার তৈরি করতে হবে।
Example: Submitting Spark Jobs to Azure HDInsight
spark-submit \ --master yarn \ --deploy-mode cluster \ --class com.example.SparkJob \ /path/to/spark-job.jarএখানে:
- YARN ব্যবহৃত হচ্ছে স্পার্ক জব পরিচালনার জন্য।
- HDInsight ক্লাস্টার ব্যবহৃত হচ্ছে স্পার্কের জন্য।
Azure Blob Storage:
- স্পার্ক Azure Blob Storage এর সাথে একত্রে কাজ করতে পারে ডেটা স্টোরেজের জন্য। স্পার্ক ব্যবহার করে আপনি Azure Blob থেকে ডেটা লোড এবং সেখানে ডেটা লিখতে পারবেন।
Example: Spark reading and writing data from/to Azure Blob Storage
val spark = SparkSession.builder() .appName("Spark on Azure Blob Storage") .getOrCreate() // Reading from Blob Storage val df = spark.read.parquet("wasbs://container-name@account-name.blob.core.windows.net/path/to/data.parquet") // Writing to Blob Storage df.write.parquet("wasbs://container-name@account-name.blob.core.windows.net/path/to/output/")এখানে:
- wasbs://: এটি Azure Blob Storage এর জন্য URI স্কিম।
- স্পার্কের সাথে Azure Blob Storage-এ ডেটা লোড এবং সেভ করা খুবই সহজ।
- Azure Databricks:
- Azure Databricks হল একটি ম্যানেজড ডেটা ইঞ্জিন যা স্পার্কের ওপরে নির্মিত, এবং ডেটা সায়েন্টিস্টদের জন্য একটি ইন্টিগ্রেটেড এনভায়রনমেন্ট প্রদান করে।
3. Spark on Google Cloud Platform (GCP)
Google Cloud Platform (GCP) এর উপর স্পার্ক রান করার জন্য বিভিন্ন টুল এবং পরিষেবা রয়েছে। Google Cloud Dataproc হল GCP এর ম্যানেজড সার্ভিস যা স্পার্ক রান করার জন্য ব্যবহৃত হয়।
How Spark Integrates with GCP:
Google Cloud Dataproc:
- Dataproc হল GCP এর ম্যানেজড সার্ভিস যা স্পার্ক এবং অন্যান্য ডিস্ট্রিবিউটেড প্রসেসিং টুল সমর্থন করে। এটি স্পার্ক ক্লাস্টার তৈরি এবং পরিচালনা করার জন্য ব্যবহৃত হয়।
Example: Submitting Spark Jobs to Dataproc
gcloud dataproc jobs submit spark \ --cluster my-cluster \ --region us-central1 \ --class com.example.SparkJob \ --jars gs://path/to/spark-job.jarGoogle Cloud Storage (GCS):
- স্পার্ক Google Cloud Storage এর সাথে একত্রে কাজ করতে পারে। স্পার্ক ব্যবহার করে আপনি GCS থেকে ডেটা লোড এবং সেখানে ডেটা লিখতে পারবেন।
Example: Spark reading and writing data from/to GCS
val spark = SparkSession.builder() .appName("Spark on Google Cloud Storage") .getOrCreate() // Reading from GCS val df = spark.read.parquet("gs://bucket-name/path/to/data.parquet") // Writing to GCS df.write.parquet("gs://bucket-name/path/to/output/")BigQuery Integration:
- স্পার্ক এবং Google BigQuery একে অপরের সাথে ইন্টিগ্রেট হয়ে ডেটা প্রসেসিং এবং বিশ্লেষণ করতে পারে। স্পার্ক ডেটাকে BigQuery-এ পাঠিয়ে বা সেখান থেকে ডেটা পড়তে সক্ষম।
Example: Reading Data from BigQuery
val df = spark.read.format("bigquery") .option("table", "project_id:dataset.table_name") .load()
Conclusion
Apache Spark ক্লাউড প্ল্যাটফর্মের সাথে ইন্টিগ্রেট করলে এটি ডিস্ট্রিবিউটেড ডেটা প্রসেসিংয়ের জন্য আরও স্কেলেবল, ফাল্ট-টলারেন্ট এবং পারফরম্যান্ট হয়ে ওঠে। AWS, Azure, এবং Google Cloud Platform (GCP) স্পার্কের জন্য বিভিন্ন ম্যানেজড পরিষেবা প্রদান করে, যেমন Amazon EMR, Azure HDInsight, Google Dataproc, যা স্পার্ক ডেপ্লয়মেন্ট এবং ক্লাস্টার ব্যবস্থাপনা সহজ করে তোলে। ক্লাউডে স্পার্ক রান করার মাধ্যমে আপনি HDFS, S3, Blob Storage, Google Cloud Storage সহ নানা ডেটা স্টোরেজের সাথে সহজে কাজ করতে পারবেন।
স্পার্কের ক্লাউড ইন্টিগ্রেশন ব্যবসায়িক এবং প্রযুক্তিগত দিক থেকে বড় ডেটাসেটের বিশ্লেষণ এবং প্রসেসিং কার্যক্রমকে দ্রুত এবং আরও কার্যকরী করে তোলে।
Apache Spark একটি ওপেন-সোর্স ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক যা বড় ডেটাসেট বিশ্লেষণ এবং রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। স্পার্কের জন্য Cloud Computing Platforms যেমন AWS, Azure, এবং Google Cloud খুবই জনপ্রিয়, কারণ তারা স্কেলেবল এবং ম্যানেজড পরিবেশ প্রদান করে যা স্পার্কের পারফরম্যান্স এবং ইফিসিয়েন্সি বাড়ায়। এখানে আমরা আলোচনা করব কিভাবে AWS, Azure, এবং Google Cloud-এ স্পার্ক সেটআপ করা যায় এবং এই ক্লাউড প্ল্যাটফর্মগুলোর মাধ্যমে স্পার্কের ব্যবহারের সুবিধা কী।
1. AWS (Amazon Web Services) এর মাধ্যমে Spark Setup
Amazon Web Services (AWS) একটি স্কেলেবল এবং অত্যন্ত কার্যকরী ক্লাউড কম্পিউটিং প্ল্যাটফর্ম, যেখানে আপনি বিভিন্ন ডেটা প্রসেসিং অ্যাপ্লিকেশন যেমন Apache Spark চালাতে পারেন। AWS-এ স্পার্ক সেটআপ করার জন্য, আপনি Amazon EMR (Elastic MapReduce) ব্যবহার করতে পারেন যা স্পার্কের জন্য একটি ম্যানেজড সার্ভিস সরবরাহ করে।
AWS EMR (Elastic MapReduce) এর মাধ্যমে Spark Setup:
- EMR Cluster Creation:
- AWS Management Console ব্যবহার করে একটি নতুন EMR cluster তৈরি করুন।
- "Applications" বিভাগে Apache Spark নির্বাচন করুন।
- আপনার প্রয়োজনীয় instance types (যেমন EC2 instances) নির্বাচন করুন এবং ক্লাস্টার তৈরি করুন।
- Spark Job Submission:
- EMR ক্লাস্টার তৈরি করার পর, আপনি SparkSubmit কমান্ড ব্যবহার করে স্পার্ক জব চালাতে পারেন।
- অথবা, AWS S3-এ আপনার ডেটা আপলোড করে এবং S3 থেকে স্পার্ক জব চালাতে পারেন।
- Spark UI Access:
- EMR ক্লাস্টার চালু হওয়ার পর, স্পার্কের UI দেখতে পারেন Public DNS এর মাধ্যমে। এটি আপনাকে জব অগ্রগতি, DAG visualization, এবং কাজের রিপোর্ট দেখতে সহায়তা করবে।
Example: SparkSubmit on AWS EMR:
spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi s3://your-bucket/spark-examples.jar
এখানে:
- --master yarn: EMR এর YARN ম্যানেজার ব্যবহার করে।
- --deploy-mode cluster: স্পার্ক জব ক্লাস্টারে রান করবে।
2. Azure এর মাধ্যমে Spark Setup
Microsoft Azure একটি জনপ্রিয় ক্লাউড কম্পিউটিং প্ল্যাটফর্ম, যা স্পার্কের জন্য একটি ম্যানেজড সার্ভিস Azure Databricks প্রদান করে। Azure Databricks স্পার্কের জন্য একটি সিম্পল এবং স্কেলেবল সিস্টেম, যা ডেটা সায়েন্টিস্ট এবং ডেভেলপারদের জন্য দ্রুত ডেটা প্রসেসিং পরিবেশ তৈরি করে।
Azure Databricks এর মাধ্যমে Spark Setup:
- Azure Databricks Workspace Creation:
- Azure Portal-এ গিয়ে একটি নতুন Databricks workspace তৈরি করুন।
- স্পার্ক ক্লাস্টার তৈরি করতে Create Cluster অপশনটি নির্বাচন করুন।
- Cluster configuration অনুযায়ী আপনার প্রয়োজনীয় instance types এবং স্কেল সেট করুন।
- Spark Job Submission:
- Azure Databricks notebooks ব্যবহার করে আপনি স্পার্ক জব তৈরি এবং চালাতে পারেন।
- Databricks CLI বা REST API ব্যবহার করে আপনি স্পার্ক জব প্রোগ্রাম্যাটিকভাবে সাবমিট করতে পারেন।
- Using Azure Storage:
- Azure Storage (مثل Blob Storage বা Data Lake Storage) থেকে ডেটা পড়তে এবং সেখানে ডেটা লিখতে Azure Blob Storage Connector ব্যবহার করুন।
Example: Spark Job in Azure Databricks:
# Python code in Azure Databricks Notebook
df = spark.read.json("wasbs://your-container@your-account.blob.core.windows.net/data.json")
df.show()
এখানে:
- wasbs প্রোটোকল ব্যবহার করে Azure Blob Storage থেকে ডেটা লোড করা হচ্ছে।
3. Google Cloud Platform (GCP) এর মাধ্যমে Spark Setup
Google Cloud Platform (GCP) একটি অত্যন্ত স্কেলেবল ক্লাউড সলিউশন, যা স্পার্ক রান করার জন্য Google Dataproc সার্ভিস প্রদান করে। Google Dataproc হল একটি ম্যানেজড সার্ভিস, যা স্পার্ক এবং হাডুপ ক্লাস্টার চালানোর জন্য সহজ এবং দ্রুত সেটআপ প্রদান করে।
Google Dataproc এর মাধ্যমে Spark Setup:
- Google Dataproc Cluster Creation:
- Google Cloud Console-এ গিয়ে একটি নতুন Dataproc Cluster তৈরি করুন।
- স্পার্কের জন্য pre-installed অপশন নির্বাচন করুন এবং আপনার প্রয়োজনীয় কনফিগারেশন সেট করুন।
- Spark Job Submission:
- Google Cloud Storage-এ ডেটা আপলোড করার পর, আপনি gcloud CLI বা Dataproc API ব্যবহার করে স্পার্ক জব পাঠাতে পারেন।
- Spark UI Access:
- Dataproc ক্লাস্টারের স্পার্ক UI ব্যবহার করে আপনি জব অগ্রগতি এবং কার্যক্রম মনিটর করতে পারবেন।
Example: Spark Job Submission on Google Dataproc:
gcloud dataproc jobs submit spark \
--cluster your-cluster-name \
--class org.apache.spark.examples.SparkPi \
--region your-region \
--jar gs://your-bucket/spark-examples.jar \
-- 100
এখানে:
- gcloud dataproc jobs submit spark কমান্ড স্পার্ক জব ডেটাপ্রক ক্লাস্টারে পাঠাচ্ছে।
- gs://your-bucket/spark-examples.jar হলো Google Cloud Storage এ থাকা জার ফাইল।
Advantages of Using Cloud for Spark Setup
- Scalability: ক্লাউড সলিউশনগুলি যেমন AWS, Azure, এবং Google Cloud আপনাকে স্কেলিংয়ের সুবিধা দেয়, যার মাধ্যমে আপনি সহজেই আপনার ক্লাস্টার আকার বৃদ্ধি বা হ্রাস করতে পারেন। এটি পারফরম্যান্স ও খরচের দিক থেকে আরও কার্যকরী হতে সাহায্য করে।
- Managed Services: ক্লাউড প্ল্যাটফর্মে স্পার্ক সেটআপ করতে managed services ব্যবহার করার সুবিধা থাকে, যেমন AWS EMR, Azure Databricks, এবং Google Dataproc। এই সার্ভিসগুলি ক্লাস্টার ম্যানেজমেন্ট এবং রিসোর্স অ্যালোকেশন অটোমেটিকভাবে করে থাকে।
- Integrated with Other Cloud Services: ক্লাউড প্ল্যাটফর্মের স্পার্ক সেটআপের সাথে অন্যান্য পরিষেবাগুলি যেমন Storage, Databases, এবং Machine Learning ইন্টিগ্রেট করা সহজ হয়। আপনি স্পার্কের ডেটা সোর্স হিসেবে S3, Blob Storage, বা Google Cloud Storage ব্যবহার করতে পারেন।
- Cost Efficiency: ক্লাউডে স্পার্ক চালানোর জন্য আপনি শুধুমাত্র ব্যবহৃত রিসোর্সের জন্য খরচ করেন। এটি বিশেষভাবে উপকারী যখন আপনি স্পার্ক জবগুলো বড় ডেটাসেটে এক্সিকিউট করতে চান এবং ক্লাস্টারের আকারের উপর ভিত্তি করে খরচ কাস্টমাইজ করতে চান।
Conclusion
Apache Spark এবং Cloud Platforms (AWS, Azure, Google Cloud) একত্রে ব্যবহার করে আপনি খুব সহজেই একটি স্কেলেবল, ম্যানেজড এবং কার্যকরী স্পার্ক পরিবেশ তৈরি করতে পারেন। AWS EMR, Azure Databricks, এবং Google Dataproc স্পার্কের জন্য ম্যানেজড সলিউশন প্রদান করে, যার মাধ্যমে আপনি আপনার ডেটা প্রসেসিং অ্যাপ্লিকেশনগুলিকে দ্রুত এবং কার্যকরীভাবে পরিচালনা করতে পারবেন। ক্লাউড প্ল্যাটফর্মগুলি স্কেলেবিলিটি, রিসোর্স ম্যানেজমেন্ট, এবং পারফরম্যান্স অপটিমাইজেশন সহ নানা সুবিধা প্রদান করে, যা বড় ডেটাসেট নিয়ে কাজ করার ক্ষেত্রে খুবই উপকারী।
Apache Spark ডিস্ট্রিবিউটেড ডেটা প্রসেসিংয়ের জন্য একটি অত্যন্ত শক্তিশালী ফ্রেমওয়ার্ক। আধুনিক ডেটা আর্কিটেকচারে, ডেটা সাধারণত Cloud Storage তে সংরক্ষিত থাকে, যেমন Amazon S3, Google Cloud Storage (GCS), এবং Azure Blob Storage। স্পার্ক এই ক্লাউড স্টোরেজগুলির সাথে সহজেই ইন্টিগ্রেট হয়ে ডেটা লোড এবং সংরক্ষণ করতে সক্ষম।
এই টিউটোরিয়ালে, আমরা Cloud Storage থেকে Spark ব্যবহার করে ডেটা লোড এবং স্টোর করার প্রক্রিয়া নিয়ে আলোচনা করব।
Cloud Storage with Apache Spark
স্পার্ক Cloud Storage থেকে ডেটা লোড এবং সেভ করতে বিভিন্ন API সমর্থন করে, যার মধ্যে প্রধানত:
- Amazon S3
- Google Cloud Storage (GCS)
- Azure Blob Storage
স্পার্ক Hadoop FileSystem API ব্যবহার করে এই ক্লাউড স্টোরেজের সাথে ইন্টিগ্রেট করতে পারে। নিচে আমরা প্রতিটি ক্লাউড স্টোরেজ প্ল্যাটফর্মের জন্য স্পার্কের সাথে ডেটা লোড এবং স্টোর করার উদাহরণ দেখব।
1. Amazon S3 থেকে Data Load এবং Store করা
Amazon S3 (Simple Storage Service) একটি জনপ্রিয় ক্লাউড স্টোরেজ সেবা যা সহজে স্কেলেবল ডেটা স্টোরেজ এবং দ্রুত অ্যাক্সেস প্রদান করে।
Step 1: Spark Configuration for Amazon S3
স্পার্ককে S3 এর সাথে কাজ করার জন্য আপনাকে S3 API এবং স্পার্কের সাথে সংযোগ স্থাপনের জন্য কিছু কনফিগারেশন করতে হবে। এই কনফিগারেশনটি সাধারণত spark-defaults.conf অথবা স্পার্ক সাবমিট কমান্ডের মাধ্যমে দেওয়া হয়।
Example Spark Configuration for S3:
spark-submit \
--class <your_class> \
--master yarn \
--conf spark.hadoop.fs.s3a.access.key=<your-access-key> \
--conf spark.hadoop.fs.s3a.secret.key=<your-secret-key> \
--conf spark.hadoop.fs.s3a.endpoint=s3.amazonaws.com \
<your-application-jar>
Step 2: Data Load from Amazon S3
স্পার্কের read() ফাংশন ব্যবহার করে আপনি S3 থেকে ডেটা লোড করতে পারেন। এখানে আমরা Parquet, CSV বা JSON ফাইল লোড করতে পারি।
Example: Load Data from S3 (CSV):
val spark = SparkSession.builder
.appName("S3 Data Load")
.getOrCreate()
val df = spark.read.option("header", "true").csv("s3a://your-bucket-name/path/to/data.csv")
df.show()
এখানে, s3a:// স্কিমা ব্যবহার করা হয়েছে, যা স্পার্ককে S3 এর সাথে সংযোগ স্থাপন করতে সহায়তা করে।
Step 3: Data Store in Amazon S3
স্পার্কের write() ফাংশন ব্যবহার করে আপনি ডেটা S3 তে সেভ করতে পারেন।
Example: Store Data in S3 (Parquet):
df.write.parquet("s3a://your-bucket-name/path/to/output")
এখানে parquet() ফাংশনটি ডেটা Parquet ফরম্যাটে S3 তে সেভ করবে। আপনি csv(), json() ইত্যাদি অন্যান্য ফরম্যাটও ব্যবহার করতে পারেন।
2. Google Cloud Storage (GCS) থেকে Data Load এবং Store করা
Google Cloud Storage (GCS) হল একটি ক্লাউড স্টোরেজ সেবা যা ডেটা স্টোরেজ এবং দ্রুত অ্যাক্সেস প্রদান করে, এবং এটি স্পার্কের সাথে ইন্টিগ্রেট করা যায়।
Step 1: Spark Configuration for Google Cloud Storage
স্পার্ককে GCS এর সাথে কাজ করার জন্য GCS API এবং স্পার্ককে GCS এর সাথে সংযোগ স্থাপন করতে কিছু কনফিগারেশন করতে হবে।
Example Spark Configuration for GCS:
spark-submit \
--class <your_class> \
--master yarn \
--conf spark.hadoop.fs.gs.project.id=<your-project-id> \
--conf spark.hadoop.fs.gs.auth.service.account.json.keyfile=<path-to-your-service-account-keyfile> \
<your-application-jar>
Step 2: Data Load from Google Cloud Storage (CSV)
স্পার্কের read() ফাংশন ব্যবহার করে আপনি GCS থেকে ডেটা লোড করতে পারেন।
Example: Load Data from GCS (CSV):
val df = spark.read.option("header", "true").csv("gs://your-bucket-name/path/to/data.csv")
df.show()
Step 3: Data Store in Google Cloud Storage
স্পার্কের write() ফাংশন ব্যবহার করে আপনি ডেটা GCS তে সেভ করতে পারেন।
Example: Store Data in GCS (Parquet):
df.write.parquet("gs://your-bucket-name/path/to/output")
এখানে parquet() ফাংশনটি ডেটা Parquet ফরম্যাটে GCS তে সেভ করবে।
3. Azure Blob Storage থেকে Data Load এবং Store করা
Azure Blob Storage Microsoft Azure-এর ক্লাউড স্টোরেজ সেবা, যা বিভিন্ন ধরনের ডেটা স্টোরেজ এবং সিস্টেম ইন্টিগ্রেশন সুবিধা প্রদান করে।
Step 1: Spark Configuration for Azure Blob Storage
স্পার্ককে Azure Blob Storage এর সাথে সংযোগ স্থাপন করতে আপনাকে hadoop-azure প্যাকেজ এবং স্টোরেজ একাউন্টের কনফিগারেশন সেটআপ করতে হবে।
Example Spark Configuration for Azure Blob Storage:
spark-submit \
--class <your_class> \
--master yarn \
--conf spark.hadoop.fs.azure.account.key.<your-storage-account-name>.blob.core.windows.net=<your-storage-account-key> \
<your-application-jar>
Step 2: Data Load from Azure Blob Storage (CSV)
স্পার্কের read() ফাংশন ব্যবহার করে আপনি Azure Blob Storage থেকে ডেটা লোড করতে পারেন।
Example: Load Data from Azure Blob Storage (CSV):
val df = spark.read.option("header", "true").csv("wasbs://your-container-name@your-storage-account-name.blob.core.windows.net/path/to/data.csv")
df.show()
Step 3: Data Store in Azure Blob Storage
স্পার্কের write() ফাংশন ব্যবহার করে আপনি ডেটা Azure Blob Storage তে সেভ করতে পারেন।
Example: Store Data in Azure Blob Storage (Parquet):
df.write.parquet("wasbs://your-container-name@your-storage-account-name.blob.core.windows.net/path/to/output")
এখানে wasbs:// স্কিমা ব্যবহার করা হচ্ছে, যা স্পার্ককে Azure Blob Storage এর সাথে সংযোগ করতে সহায়তা করে।
Cloud Storage Integration Best Practices
- Data Partitioning: Cloud storage এ বড় ডেটাসেট রাখলে সঠিকভাবে পার্টিশন করা উচিত, যেন স্পার্ক ডেটা দ্রুত লোড এবং প্রসেস করতে পারে।
- Compression: ডেটাকে কম্প্রেস করা উচিত (যেমন Parquet ফরম্যাটে) যাতে ডেটা সংরক্ষণ এবং স্থানান্তর দক্ষ হয়।
- Access Controls: নিরাপত্তার জন্য ক্লাউড স্টোরেজ এক্সেস কন্ট্রোল সঠিকভাবে কনফিগার করা উচিত, যেমন IAM roles বা service account ব্যবহারের মাধ্যমে।
- Error Handling: Cloud storage থেকে ডেটা লোড বা সেভ করার সময় সম্ভাব্য ত্রুটি (যেমন নেটওয়ার্ক সমস্যা) মোকাবেলা করার জন্য উপযুক্ত error handling কৌশল প্রয়োগ করুন।
Conclusion
Cloud Storage থেকে Apache Spark ব্যবহার করে ডেটা লোড এবং স্টোর করা একটি অত্যন্ত গুরুত্বপূর্ণ এবং কার্যকরী প্রক্রিয়া। Amazon S3, Google Cloud Storage, এবং Azure Blob Storage থেকে ডেটা লোড এবং স্টোর করার জন্য স্পার্ক বিভিন্ন কনফিগারেশন এবং API সমর্থন করে, যা ক্লাউড-ভিত্তিক ডেটা প্রসেসিংকে সহজ এবং স্কেলেবল করে তোলে। আপনি স্পার্কের শক্তিশালী DataFrame API এবং Spark SQL ব্যবহার করে ক্লাউড স্টোরেজ থেকে ডেটা প্রক্রিয়া এবং বিশ্লেষণ করতে পারেন।
Apache Spark একটি শক্তিশালী ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক যা ডেটা স্ট্রিমিং, ব্যাচ প্রসেসিং, এবং মেশিন লার্নিংয়ের জন্য ব্যবহৃত হয়। যদিও স্পার্ক স্থানীয় ক্লাস্টার বা হাডুপ ক্লাস্টারের মাধ্যমে চালানো যেতে পারে, কিন্তু Databricks এবং Cloud-based Spark Solutions এর মাধ্যমে ক্লাউডে স্পার্ক চালানো আরও সহজ, স্কেলেবল এবং পারফরম্যান্ট হয়ে ওঠে।
এই টিউটোরিয়ালে, আমরা Databricks এবং Cloud-based Spark Solutions নিয়ে আলোচনা করব এবং কীভাবে ক্লাউড পরিবেশে স্পার্ক ব্যবহার করা যায় তা দেখাব।
Databricks: What Is It?
Databricks হল একটি ক্লাউড-ভিত্তিক প্ল্যাটফর্ম যা Apache Spark এর উপর ভিত্তি করে কাজ করে এবং ডেটা সায়েন্স, ডেটা ইঞ্জিনিয়ারিং এবং মেশিন লার্নিং অ্যাপ্লিকেশনগুলির জন্য একটি ইনটিগ্রেটেড উন্নয়ন পরিবেশ (IDE) প্রদান করে। Databricks স্পার্ক ব্যবহারকারীদের জন্য একটি সহায়ক প্ল্যাটফর্ম, যা ব্যবহারকারীদের স্পার্ক ক্লাস্টার পরিচালনা, ডেটা বিশ্লেষণ, এবং মডেল ডেভেলপমেন্টের জন্য প্রয়োজনীয় টুলস প্রদান করে।
Key Features of Databricks:
- Optimized Apache Spark Environment:
- Databricks স্পার্কের পারফরম্যান্স অপটিমাইজ করার জন্য বিভিন্ন উন্নত ফিচার প্রদান করে। এটি স্পার্কের Catalyst Optimizer এবং Tungsten Execution Engine ব্যবহার করে পারফরম্যান্স বাড়ায়।
- Unified Analytics Platform:
- Databricks স্পার্ক, SQL, মেশিন লার্নিং, এবং গ্রাফিক্যাল ডেটা বিশ্লেষণের জন্য একসাথে কাজ করার সুযোগ দেয়। এটি ডেটা ইঞ্জিনিয়ারিং এবং ডেটা সায়েন্স এক্সপার্টদের জন্য এক প্ল্যাটফর্মে টুলস সরবরাহ করে।
- Collaboration and Notebooks:
- Databricks নোটবুকের মাধ্যমে ডেটা সায়েন্টিস্ট এবং ডেটা ইঞ্জিনিয়াররা একে অপরের সাথে সহযোগিতা করে কোড শেয়ার এবং ডেটা বিশ্লেষণ করতে পারেন। এটি Python, R, SQL, এবং Scala সহ একাধিক ভাষা সমর্থন করে।
- Managed Spark Clusters:
- Databricks আপনার স্পার্ক ক্লাস্টার স্বয়ংক্রিয়ভাবে তৈরি, স্কেল এবং ম্যানেজ করে, যাতে ব্যবহারকারীকে ক্লাস্টার ম্যানেজমেন্টের বিষয়ে চিন্তা করতে না হয়।
How Databricks Helps with Spark Workloads:
- Automated Scaling: Databricks ক্লাস্টার স্বয়ংক্রিয়ভাবে স্কেল করে, যা বিশাল ডেটাসেটের সাথে কাজ করার সময় পারফরম্যান্স বজায় রাখতে সাহায্য করে।
- Collaborative Environment: ডেটা সায়েন্টিস্ট এবং ডেটা ইঞ্জিনিয়াররা একসাথে কাজ করার জন্য ইন্টিগ্রেটেড টুলস এবং নোটবুক সরবরাহ করে, যা কোড এবং ডেটা বিশ্লেষণের মধ্যে সহযোগিতা সহজ করে।
- Easy-to-Use Interface: Databricks-এর UI সহজে স্পার্ক এবং মেশিন লার্নিং কাজ পরিচালনা করতে সহায়তা করে। এখানে একটি অনবোর্ডিং পরিবেশও রয়েছে যা ব্যবহারকারীকে দ্রুত কাজ শুরু করতে সাহায্য করে।
Cloud-based Spark Solutions
ক্লাউড ভিত্তিক স্পার্ক সমাধানগুলি একাধিক ক্লাউড প্ল্যাটফর্মের মাধ্যমে স্পার্ক রান এবং ম্যানেজ করার সুযোগ দেয়। বিভিন্ন ক্লাউড প্ল্যাটফর্ম যেমন Amazon Web Services (AWS), Microsoft Azure, এবং Google Cloud Platform (GCP) স্পার্ক ক্লাস্টার পরিচালনার জন্য স্বয়ংক্রিয় এবং স্কেলেবল পরিষেবা প্রদান করে।
1. Amazon EMR (Elastic MapReduce)
Amazon EMR হল AWS এর একটি ম্যানেজড সার্ভিস যা হাডুপ এবং স্পার্কের মতো ডিস্ট্রিবিউটেড ফ্রেমওয়ার্কের উপর কাজ করার জন্য ব্যবহৃত হয়। এটি সহজে স্পার্ক ক্লাস্টার তৈরি এবং পরিচালনা করতে সাহায্য করে, এবং স্পার্কের জন্য ক্লাস্টার স্কেলিং এবং ইন্টারেক্টিভ অ্যাপ্লিকেশন সাপোর্ট করে।
Features:
- Managed Spark Cluster: EMR আপনাকে স্বয়ংক্রিয়ভাবে স্পার্ক ক্লাস্টার তৈরি এবং স্কেল করতে সহায়তা করে।
- Elastic Scaling: স্কেলিং প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে পরিচালনা করা হয়, যাতে স্পার্ক প্রয়োগের উপর ভিত্তি করে রিসোর্স ব্যবহারের ওপর ভিত্তি করে।
- Integration with AWS Ecosystem: অন্যান্য AWS পরিষেবাগুলির সাথে যেমন S3, RDS, DynamoDB ইত্যাদি সহজ ইন্টিগ্রেশন।
Example:
aws emr create-cluster --name "Spark Cluster" --release-label emr-6.1.0 --applications Name=Spark --ec2-attributes KeyName=my-key --instance-type m5.xlarge --instance-count 3
2. Azure Databricks
Azure Databricks হল মাইক্রোসফটের একটি স্পেশালাইজড স্পার্ক সলিউশন যা Databricks প্ল্যাটফর্মের উপর ভিত্তি করে এবং মাইক্রোসফটের Azure Cloud এ হোস্ট করা হয়। এটি ডেটা সায়েন্স, ডেটা ইঞ্জিনিয়ারিং এবং মেশিন লার্নিংয়ের জন্য একটি পূর্ণাঙ্গ পরিবেশ সরবরাহ করে।
Features:
- Unified Environment: Databricks এবং Azure-এর মধ্যে ইন্টিগ্রেশন দিয়ে আপনি স্পার্ক এবং মেশিন লার্নিং কাজ একসাথে করতে পারেন।
- Spark Cluster Management: Azure Databricks আপনাকে আপনার স্পার্ক ক্লাস্টার সহজেই ম্যানেজ করতে এবং স্কেল করতে সহায়তা করে।
- Integrated with Azure Data Services: Azure SQL Data Warehouse, Cosmos DB এবং Azure Blob Storage এর সঙ্গে ইন্টিগ্রেশন।
Example:
az databricks clusters create --cluster-name "spark-cluster" --spark-version "5.5.x-scala2.11" --node-type "Standard_DS3_v2" --num-workers 3
3. Google Cloud Dataproc
Google Cloud Dataproc হল গুগলের একটি ম্যানেজড স্পার্ক এবং হাডুপ সার্ভিস, যা ক্লাউডে স্পার্ক রান করার জন্য ব্যবহৃত হয়। এটি দ্রুত স্পার্ক ক্লাস্টার তৈরি এবং পরিচালনার জন্য ডিজাইন করা হয়েছে, এবং গুগলের অন্যান্য ডেটা সেবার সাথে সহজে ইন্টিগ্রেট করা যায়।
Features:
- Fast Cluster Deployment: ক্লাস্টার দ্রুত ডিপ্লয় করা হয়, সাধারণত কয়েক মিনিটের মধ্যে।
- Cost-Effective: আপনি প্রয়োজন অনুসারে স্পার্ক ক্লাস্টারকে স্কেল এবং শাটডাউন করতে পারেন, যাতে খরচ কম থাকে।
- Integration with GCP Services: GCS (Google Cloud Storage), BigQuery, Pub/Sub ইত্যাদি গুগলের পরিষেবাগুলির সঙ্গে ইন্টিগ্রেশন সমর্থন।
Example:
gcloud dataproc clusters create spark-cluster --region us-central1 --zone us-central1-b --single-node --image-version 2.0-debian9 --master-machine-type n1-standard-4 --worker-machine-type n1-standard-4
Benefits of Cloud-based Spark Solutions
- Scalability: ক্লাউড-ভিত্তিক স্পার্ক সমাধানগুলি সহজে স্কেল করা যায়। আপনি সঠিক পরিমাণে রিসোর্স ব্যবহার করতে পারেন এবং প্রয়োজনে সেই রিসোর্স বাড়াতে বা কমাতে পারেন।
- Cost-Effectiveness: ক্লাউডে স্পার্ক চালানোর মাধ্যমে আপনি শুধুমাত্র ব্যবহৃত রিসোর্সের জন্য খরচ করেন। স্পার্ক ক্লাস্টারগুলিকে প্রয়োজন অনুসারে স্কেল করা যায়, এবং খরচ কমাতে পারবেন।
- Integration with Cloud Services: স্পার্ক ক্লাস্টারগুলি ক্লাউড পরিবেশে সহজে অন্যান্য ডেটা এবং মেশিন লার্নিং সেবার সাথে ইন্টিগ্রেট করা যায়। যেমন, Azure Blob Storage, Amazon S3, Google Cloud Storage ইত্যাদি।
- Easy Management: ক্লাউড ভিত্তিক সলিউশনগুলি স্পার্ক ক্লাস্টার পরিচালনা করতে অনেক সহজ করে তোলে, যেমন অটো স্কেলিং, ডাটাব্রিকস এবং স্পার্ক ম্যানেজমেন্টের সুবিধা প্রদান করে।
- Collaboration: ক্লাউড-ভিত্তিক ডেটাব্রিকস এবং স্পার্ক সলিউশনগুলি অনেক সময় কোল্যাবোরেটিভ ফিচার সরবরাহ করে, যেমন একসাথে কাজ করার জন্য নোটবুক এবং শেয়ারিং সুবিধা।
Conclusion
Databricks এবং Cloud-based Spark Solutions স্পার্কের জন্য অত্যন্ত শক্তিশালী প্ল্যাটফর্ম যা সহজে স্পার্ক ক্লাস্টার তৈরি, পরিচালনা এবং স্কেল করার সুযোগ দেয়। Databricks স্পার্ক ব্যবহারকারীদের জন্য একটি উন্নত এবং একীভূত প্ল্যাটফর্ম সরবরাহ করে, যেখানে আপনি স্পার্ক ক্লাস্টার পরিচালনা, ডেটা বিশ্লেষণ এবং মেশিন লার্নিং কাজ করতে পারেন। এছাড়া, AWS, Azure, এবং GCP তে স্পার্ক চালানোর মাধ্যমে আপনি স্কেলেবিলিটি, কস্ট-এফেক্টিভনেস, এবং সিস্টেম পরিচালনার সুবিধা উপভোগ করতে পারেন।
এটি স্পার্ক অ্যাপ্লিকেশনকে আরও সহজ, দ্রুত এবং কার্যকরী করে তোলে, যা ডেটা সায়েন্স এবং ডেটা ইঞ্জিনিয়ারিংয়ের জন্য একটি অপরিহার্য টুল।
Apache Spark একটি শক্তিশালী ডিস্ট্রিবিউটেড ডেটা প্রসেসিং ফ্রেমওয়ার্ক, যা ডেটা অ্যানালাইসিস, মেশিন লার্নিং এবং স্ট্রিমিং প্রসেসিংয়ের জন্য ব্যবহৃত হয়। Cloud Deployment এর মাধ্যমে আপনি স্পার্ক ক্লাস্টার সহজেই স্কেল করতে পারেন, এবং এটি আপনাকে একটি কার্যকরী, নির্ভরযোগ্য এবং উচ্চ পারফরম্যান্স ক্লাস্টার পরিচালনা করতে সাহায্য করে। ক্লাউড ডেপ্লয়মেন্ট স্পার্কের ক্লাস্টার ম্যানেজমেন্ট এবং রিসোর্স ম্যানেজমেন্টের জটিলতা হ্রাস করে এবং অধিক স্কেলেবিলিটি এবং ফ্লেক্সিবিলিটি প্রদান করে।
এই টিউটোরিয়ালে, আমরা Spark Cluster এর জন্য বিভিন্ন Cloud Deployment Techniques নিয়ে আলোচনা করব এবং দেখব কিভাবে স্পার্ক ক্লাস্টারটি ক্লাউডে ডিপ্লয় করা যায়।
Cloud Deployment Options for Apache Spark
স্পার্ক ক্লাস্টারের জন্য ক্লাউডে ডেপ্লয় করার জন্য বেশ কিছু জনপ্রিয় প্ল্যাটফর্ম রয়েছে, যেমন Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), এবং Databricks। এই প্ল্যাটফর্মগুলি স্পার্ক ক্লাস্টারের ডেপ্লয়মেন্টকে সহজ করে তোলে এবং স্কেল করা যায়।
1. Spark on Amazon Web Services (AWS)
AWS হল সবচেয়ে জনপ্রিয় ক্লাউড প্ল্যাটফর্ম, যেখানে স্পার্ক ক্লাস্টার ডিপ্লয় করার জন্য একাধিক পদ্ধতি রয়েছে। AWS এর মাধ্যমে আপনি স্পার্ককে বিভিন্ন সার্ভিসে ডিপ্লয় করতে পারেন যেমন EC2 Instances, EMR (Elastic MapReduce) এবং S3।
1.1. Spark on EC2 Instances:
আপনি EC2 instances ব্যবহার করে নিজের স্পার্ক ক্লাস্টার তৈরি করতে পারেন। EC2 ইন্সট্যান্সে স্পার্ক ইনস্টল করে এবং প্রপার কনফিগারেশন সেটআপ করে একটি কাস্টম ক্লাস্টার তৈরি করা সম্ভব।
Steps:
- EC2 ইন্সট্যান্স চালু করুন।
- সঠিক স্পার্ক ভার্সন ইনস্টল করুন।
- Spark Configuration ফাইলগুলিকে কনফিগার করুন (যেমন spark-defaults.conf, slaves file).
- Amazon S3 অথবা অন্য ক্লাউড স্টোরেজ ব্যবহার করে ডেটা সংরক্ষণ করুন।
- স্পার্ক অ্যাপ্লিকেশন রান করতে spark-submit ব্যবহার করুন।
1.2. Spark on AWS EMR (Elastic MapReduce):
AWS এর EMR স্পার্ক ডেপ্লয়মেন্টের জন্য একটি পরিচালিত সার্ভিস, যা স্পার্ক ক্লাস্টার তৈরি এবং পরিচালনা করতে সহজ করে তোলে। EMR স্পার্ক, Hadoop, Hive, HBase ইত্যাদি কম্পোনেন্টের জন্য পূর্ব-কনফিগারড ক্লাস্টার সরবরাহ করে।
Steps:
- AWS EMR কনসোল থেকে একটি নতুন EMR ক্লাস্টার তৈরি করুন।
- স্পার্ক এবং অন্যান্য প্রয়োজনীয় কম্পোনেন্ট ইনস্টল করুন।
- ডেটা প্রসেস করার জন্য স্পার্ক অ্যাপ্লিকেশন রান করুন।
EMR CLI Example:
aws emr create-cluster --name "Spark Cluster" --release-label emr-5.28.0 --applications Name=Spark --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3
2. Spark on Microsoft Azure
Microsoft Azure একটি ক্লাউড প্ল্যাটফর্ম যা স্পার্ক ডিপ্লয়মেন্টের জন্য Azure HDInsight এবং Azure Databricks এর মতো বিভিন্ন অপশন প্রদান করে।
2.1. Spark on Azure HDInsight:
Azure HDInsight হল একটি পরিচালিত সেবা যা স্পার্ক এবং অন্যান্য হাডুপ কম্পোনেন্টের জন্য একাধিক পরিষেবা প্রদান করে। এটি একটি ক্লাস্টার ব্যবস্থাপনা এবং স্কেলিংয়ের জন্য সহজ উপায় প্রদান করে।
Steps:
- Azure Portal থেকে একটি নতুন HDInsight ক্লাস্টার তৈরি করুন।
- স্পার্ক ক্লাস্টারের জন্য প্রয়োজনীয় রিসোর্স এবং কনফিগারেশন সেট করুন।
- ডেটা প্রক্রিয়া করতে spark-submit ব্যবহার করুন।
2.2. Spark on Azure Databricks:
Azure Databricks হল একটি পরিচালিত Apache Spark সেবা যা স্পার্ক অ্যাপ্লিকেশনগুলো দ্রুত এবং সহজভাবে ডিপ্লয় এবং পরিচালনা করতে সহায়তা করে। Databricks উচ্চ পারফরম্যান্স এবং স্কেলেবিলিটি সহ উন্নত ফিচার প্রদান করে।
Steps:
- Azure Databricks কাজ শুরু করার জন্য একটি ক্লাস্টার তৈরি করুন।
- Databricks Notebooks ব্যবহার করে ডেটা বিশ্লেষণ এবং স্পার্ক অ্যাপ্লিকেশন রান করুন।
3. Spark on Google Cloud Platform (GCP)
Google Cloud Platform স্পার্কের জন্য একটি ক্লাউড পরিবেশ প্রদান করে, যেখানে আপনি Google Dataproc এবং Google Compute Engine ব্যবহার করে স্পার্ক ক্লাস্টার ডিপ্লয় করতে পারেন।
3.1. Spark on Google Dataproc:
Google Dataproc হল একটি পরিচালিত স্পার্ক এবং হাডুপ সেবা, যা স্পার্ক ক্লাস্টার দ্রুত এবং সহজভাবে চালু করতে সক্ষম।
Steps:
- GCP Console থেকে একটি Dataproc ক্লাস্টার তৈরি করুন।
- স্পার্ক এবং অন্যান্য হাডুপ কম্পোনেন্ট কনফিগার এবং ইন্সটল করুন।
- ডেটা প্রক্রিয়া করতে spark-submit ব্যবহার করুন।
Dataproc CLI Example:
gcloud dataproc clusters create my-spark-cluster --region us-central1 --zone us-central1-a --master-machine-type n1-standard-2 --worker-machine-type n1-standard-2 --num-workers 3 --image-version 1.5-debian10
3.2. Spark on Google Compute Engine:
স্পার্ক ক্লাস্টার Google Compute Engine এর ইন্সট্যান্সে ডিপ্লয় করা যেতে পারে। এটি আরও কাস্টমাইজড এবং নিয়ন্ত্রণযোগ্য ডিপ্লয়মেন্টের সুবিধা দেয়।
4. Spark on Databricks
Databricks হল একটি পরিচালিত স্পার্ক সেবা যা Apache Spark-এর ওপর ভিত্তি করে তৈরি, এবং এটি ক্লাউডে একটি স্কেলেবল এবং কার্যকরী এনভায়রনমেন্ট সরবরাহ করে। Databricks সহজে স্পার্ক ক্লাস্টার তৈরি এবং পরিচালনা করার জন্য একটি ইউজার-ফ্রেন্ডলি ইন্টারফেস প্রদান করে, যেখানে auto-scaling, auto-termination, এবং collaborative notebooks সহ বিভিন্ন সুবিধা রয়েছে।
Steps:
- Databricks প্ল্যাটফর্মে একটি নতুন ক্লাস্টার তৈরি করুন।
- Notebooks ব্যবহার করে ডেটা বিশ্লেষণ এবং স্পার্ক অ্যাপ্লিকেশন রান করুন।
- ডেটা সেভ এবং শেয়ার করুন।
Conclusion
Apache Spark কে Cloud-এ ডেপ্লয় করা হলে আপনি অধিক স্কেলেবিলিটি, রিসোর্স ম্যানেজমেন্ট, এবং ফ্লেক্সিবিলিটি লাভ করেন। AWS, Azure, Google Cloud, এবং Databricks এর মতো ক্লাউড প্ল্যাটফর্মগুলো সহজে স্পার্ক ক্লাস্টার ডিপ্লয় করার জন্য বিভিন্ন টুল এবং সেবা প্রদান করে। এগুলোর মাধ্যমে আপনি স্পার্কের উচ্চ পারফরম্যান্স এবং স্কেলেবল ডিস্ট্রিবিউটেড ডেটা প্রসেসিং সক্ষমতা ব্যবহার করে আপনার ডেটা অ্যানালাইসিস এবং মেশিন লার্নিং মডেল উন্নয়ন করতে পারবেন।
Read more